Traditional graphics processing units (GPUs) execute commands to render graphics for computing devices, such as a gaming console. Commands can be placed into a command buffer and can be executed by the GPU to perform various tasks, such as presenting data for display. In order to monitor the performance of a GPU, commands for the GPU can be captured and analyzed, along with a state of memory associated with the commands. Traditionally, commands associated with a single-engine GPU have been captured and analyzed in a linear sequence corresponding to the insertion of the commands into the command buffer. However, commands for a multi-engine GPU may include dependencies between command buffers, potentially leading to invalid results when capturing and analyzing commands.